/**
 * 
 */
package autoUpdater.helper;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Date;

/**
 * @author Christian
 * 
 */
public class Util {
	
	/**
	 * 
	 * @return gibt den aktuellen Unixtimestamp aus.
	 */
	public static long getUnixTimestamp() {

		return new Date().getTime() / 1000;
	}
	
	/**
	 * Vergleicht die md5 checksumme mit der vom Server
	 * 
	 * @param toTestPath
	 *            Path der zu testenen Datei
	 * 
	 * @param md5Hash
	 *            Hash mit dem verglichen wird
	 * 
	 * @param putout
	 *            Wenn true wird der berechnete md5 hash auf der Console ausgeben
	 * @return true wenn der md5hash dem aus den Daten vom Server übereinstimmt.
	 */
	public static String getMd5(File toTestPath) {

		MessageDigest md;
		String fileMd5Hash = null;
		InputStream is = null;
		try {
			md = MessageDigest.getInstance("MD5");
			is = new FileInputStream(toTestPath);
			byte[] buffer = new byte[8192];
			int read = 0;
			int count = 0;
			while ((read = is.read(buffer)) > 0) {
				md.update(buffer, 0, read);
				count++;
			}
			byte[] md5 = md.digest();
			BigInteger bi = new BigInteger(1, md5);
			fileMd5Hash = bi.toString(16);
			for (; fileMd5Hash.length() < 32;) {
				fileMd5Hash = "0" + fileMd5Hash;
			}
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
		} catch (FileNotFoundException e) {
			System.out.println("Die Datei wurde nicht gefunden");
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				is.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		return fileMd5Hash;
	}
}
